package collectionsDemo;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class FanxingTestDriver {
    public static void main(String[] args) {
                test01();
    }

    /**
     * 使用泛型
     * Map接口实现类：HashMap
     */
    private static void test01(){
        //创建一个Map集合对象
        //多态：父类指代子类
        //面向接口的编程思想
        Map<String,Object>map0=new HashMap<>();
        //添加元素
        map0.put("zahngsan","男");
        map0.put("lisi","女");
        map0.put("lisi","男");
        map0.put(null,"女");
        map0.put("wangwu","男");

        //遍历
        System.out.println("zhangsan："+map0.get("zahngsan"));


        System.out.println("将Map集合转化为EntrySet集合进行遍历（增强型for循环）：");
        //从map中获取所有的键值对集合（Set结构）
        Set<Map.Entry<String,Object>> entryset=map0.entrySet();
        //此时，map的遍历转化为对EntrySet的遍历（Set集合的遍历形式）
        for (Map.Entry entry:entryset) {
            //强制类型转化（向下溯型）
            //Map.Entry entry=(Map.Entry)en;
            System.out.println(entry.getKey()+":"+entry.getValue());
        }


        System.out.println("将Map集合转换为EntrySet集合进行遍历（迭代器）：");
        //获取entrySet的迭代器对象
        Iterator <Map.Entry<String,Object>>it=entryset.iterator();
        while (it.hasNext()){
            //强制类型转换（向下溯型）
            Map.Entry entry= it.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

        System.out.println("将Map集合转换为KeySet集合进行遍历（迭代器）：");
        //将map转化为keyset集合进行遍历
        //通过遍历map中取出的key集合，然后使用get（key）方法获取与之对应的value值，达到遍历目的
        //获取Map的keySet的迭代器对象
        Set<String> setKeys=map0.keySet();
        //转换为对keySet的遍历
        //获取keySet的迭代器对象
        Iterator<String> it1=setKeys.iterator();
        while (it1.hasNext()){
            //获取当前遍历对象

            String key=it1.next();
            //通过key从map中取出与key对应的value值
            System.out.println(key+":"+map0.get(key));
        }


    }
}
